Contágio

Column

Casos Diários

Casos Acumulados

Column

112.31

19/09/21

06/21

50

Informações

Mortalidade

Column

Mortes Diárias

Mortes Acumuladas

Column

4.12

09/04/21

04/21

55

Informações

Vacinação

Column

Vacinação da Cidade de Sorocaba

Column

83.49%

73.44%

91.77%

79.33%

Informações

Glossário

Sobre

Atualizado pela última vez em 15/12/21 às 15:31 BRT.

Este é o dashboard “A COVID-19 em Sorocaba”. Ele é o resultado do Projeto de Extensão “Análise e Visualização dos Dados da Pandemia na Cidade de Sorocaba”, sob fomento da ProEx - Pró Reitoria de Extensão da UFSCar - Universidade Federal de São Carlos.

Ele é realizado por Victor Alves Dogo Martins (aluno do DEs - Departamento de Estatística da UFSCar - Campus São Carlos), sob orientação da Profa. Dra. Andreza Aparecida Palma (vinculada ao DEc - Departamento de Economia da UFSCar - Campus Sorocaba).

O objetivo deste projeto é fornecer um dashboard conciso e de fácil compreensão com dados relativos à pandemia da COVID-19 na cidade de Sorocaba - SP. Estes dados, ao longo do tempo, consistem em casos confirmados, mortes confirmadas e em esforços da campanha de vacinação na cidade.

Todos os dados, gráficos e formatação do dashboard são construídos com auxílio da linguagem de programação estatística R:

Quaisquer dúvidas, críticas, elogios e sugestões podem ser encaminhadas por e-mail para: teste, substituir depois.

Você pode visualizar o repositório deste site em victordogo/covid19-sorocaba no GitHub.

Referências:

IANNONE, Richard; ALLAIRE, JJ ; BORGES, Barbara. flexdashboard: R Markdown Format for Flexible Dashboards. [s.l.: s.n.], 2020. Disponível em: <https://CRAN.R-project.org/package=flexdashboard>.
SIEVERT, Carson. Interactive Web-Based Data Visualization with R, plotly, and shiny. [s.l.]: Chapman; Hall/CRC, 2020. Disponível em: <https://plotly-r.com>.
WICKHAM, Hadley. ggplot2: Elegant Graphics for Data Analysis. [s.l.]: Springer-Verlag New York, 2016. Disponível em: <https://ggplot2.tidyverse.org>.
WICKHAM, Hadley. tidyr: Tidy Messy Data. [s.l.: s.n.], 2021. Disponível em: <https://CRAN.R-project.org/package=tidyr>.
WICKHAM, Hadley; AVERICK, Mara; BRYAN, Jennifer; et al. Welcome to the tidyverse. Journal of Open Source Software, v. 4, n. 43, p. 1686, 2019.
WICKHAM, Hadley; FRANÇOIS, Romain; HENRY, Lionel; et al. dplyr: A Grammar of Data Manipulation. [s.l.: s.n.], 2021. Disponível em: <https://CRAN.R-project.org/package=dplyr>.
---
title: "A COVID-19 em Sorocaba"
bibliography: refs/ref.bib
csl: refs/abnt.csl
nocite: '@*'
output: 
  flexdashboard::flex_dashboard:
    logo: images/logo-proex-ufscar.png
    favicon: images/icon.png
    source_code: embed
    orientation: columns
    vertical_layout: fill
---



```{r setup, include=FALSE}
library(flexdashboard)

# Lendo dados

covid_sorocaba <- readr::read_rds("data/covid_sorocaba.rds")
covid_sp <- readr::read_rds("data/covid_sp.rds")
vacina_scb <- readr::read_rds("data/vacina_scb.rds")

# Icones de apresentacao 

htmltools::tagList(fontawesome::fa_html_dependency())

```

```{css info-style, echo = FALSE}
  .chart-shim {
    overflow-y: scroll;
    }
```

Contágio
================================================================

Column {.tabset}
-------------------------------------

### Casos Diários

```{r}

# Casos Diários de sorocaba com media movel de 7 e 14 dias

casos_diarios <- covid_sorocaba |>
  dplyr::rename(`Dia`=date,
                `Casos Diários`=new_confirmed) |>
  dplyr::mutate(
    `Média Móvel - 7 dias`=zoo::rollmean(`Casos Diários`,k=7,na.pad = TRUE),
    `Média Móvel - 14 dias`=zoo::rollmean(`Casos Diários`,k=14,na.pad = TRUE)
    ) |>
  ggplot2::ggplot(ggplot2::aes(y=`Casos Diários`,x=`Dia`))+
  ggplot2::geom_line(ggplot2::aes(fill="Casos Diários"),alpha=0.3)+
  ggplot2::geom_line(
    ggplot2::aes(y=`Média Móvel - 7 dias`,
                 fill="Média Móvel - 7 dias"),
    color="red")+
  ggplot2::geom_line(
    ggplot2::aes(y=`Média Móvel - 14 dias`,
                 fill="Média Móvel - 14 dias"),
    color="blue")+
  ggplot2::labs(
    title="Casos Diários na cidade de Sorocaba \ndevido à COVID-19"
    )+
  ggplot2::scale_y_continuous(breaks = seq(0,1000,100))+
  ggplot2::theme_minimal()

casos_diarios |> plotly::ggplotly()

```

### Casos Acumulados

```{r}

# Casos Acumulados de sorocaba comparada com cidades da regiao

casos_acumulados <- covid_sp |>
  dplyr::group_by(city) |>
  dplyr::rename(`Dia`=date,
                `Total de Casos`=last_available_confirmed,
                `Cidade`=city) |>
  ggplot2::ggplot(ggplot2::aes(y=`Total de Casos`,x=`Dia`,
                               color=`Cidade`))+
  ggplot2::geom_line()+
  ggplot2::labs(
    title="Casos Acumulados na cidade de Sorocaba \ncomparada com outras cidades"
  )+
  ggplot2::theme_minimal()

casos_acumulados |> plotly::ggplotly()

```

Column {data-width=150}
-------------------------------------

###

```{r}

# Casos por mil habitantes

((max(covid_sorocaba$last_available_confirmed)/687357)*1000)  |>
  round(digits=2) |> 
  flexdashboard::valueBox(
    caption="casos por mil habitantes",
    icon="fas fa-users-slash"
  )

```

###

```{r}
# Data com mais casos

covid_sorocaba |> 
  dplyr::filter(
    new_confirmed==max(covid_sorocaba$new_confirmed)
  ) |> 
  dplyr::select(date) |>
  dplyr::pull() |> 
  format("%d/%m/%y") |> 
  flexdashboard::valueBox(
    caption="data com maior número de casos",
    icon="far fa-calendar-alt"
  )

```

###

```{r}
# Mês com mais casos

covid_sorocaba |> 
  dplyr::mutate(
    month=lubridate::floor_date(date, "month")
  )|>
  dplyr::group_by(month) |> 
  dplyr::summarise(
    total_cases=sum(new_confirmed)
  ) |> 
  dplyr::filter(
    total_cases==max(total_cases)
  ) |> 
  dplyr::select(month) |>
  dplyr::pull() |> 
  format("%m/%y") |> 
  flexdashboard::valueBox(
    caption="mês com maior número de casos",
    icon="far fa-calendar-alt"
  )

```

###

```{r}
# Dias consecutivos sem diagnósticos

dias_consec_casos <- covid_sorocaba |> 
  dplyr::mutate(
    Contagem= stats::ave(new_confirmed, 
                         data.table::rleid(new_confirmed), FUN=seq_along)
  ) |>
  dplyr::filter(
    new_confirmed==0
  ) |> 
  dplyr::select(Contagem)

dias_consec_casos |> 
  dplyr::slice_tail() |> 
  dplyr::pull() |> 
  flexdashboard::valueBox(
    caption="dias consecutivos sem casos",
    icon= "fas fa-check-circle",
    color="success"
  )

```

### Informações

* Os dados referentes aos contágios foram retirados do site [brasil.io](https://brasil.io/dataset/covid19/). Para mais informações sobre a manipulação deles, acesse o [repositório do dashboard no github](https://github.com/victordogo/covid19-sorocaba/tree/master/data-raw);
* Alguma dúvida? Envie um e-mail para victordogo@gmail.com ou acesse a aba ["Glossário"](#glossário);
* **Atualizado pela última vez em `r format(Sys.Date(), '%d/%m/%y')` às `r format(Sys.time(), '%R')` BRT.**

Mortalidade
================================================================

Column {.tabset}
-------------------------------------

### Mortes Diárias

```{r}

# Mortes diarias de sorocaba com media movel de 7 e 14 dias

mortes_diarias <- covid_sorocaba |>
  dplyr::rename(`Dia`=date,
                `Mortes Diárias`=new_deaths) |>
  dplyr::mutate(
    `Média Móvel - 7 dias`=zoo::rollmean(`Mortes Diárias`,k=7,na.pad = TRUE),
    `Média Móvel - 14 dias`=zoo::rollmean(`Mortes Diárias`,k=14,na.pad = TRUE)
    ) |>
  ggplot2::ggplot(ggplot2::aes(y=`Mortes Diárias`,x=`Dia`))+
  ggplot2::geom_line(ggplot2::aes(fill="Mortes Diárias"),alpha=0.3)+
  ggplot2::geom_line(
    ggplot2::aes(y=`Média Móvel - 7 dias`,
                 fill="Média Móvel - 7 dias"),
    color="red")+
  ggplot2::geom_line(
    ggplot2::aes(y=`Média Móvel - 14 dias`,
                 fill="Média Móvel - 14 dias"),
    color="blue")+
  ggplot2::labs(
    title="Mortes Diárias na cidade de Sorocaba \ncausadas pela COVID-19"
    )+
  ggplot2::scale_y_continuous(breaks = seq(0,85,5))+
  ggplot2::theme_minimal()

mortes_diarias |> plotly::ggplotly()

```

### Mortes Acumuladas

```{r}

# Mortes acumuladas de sorocaba comparada com cidades da regiao

mortes_acumuladas <- covid_sp |>
  dplyr::group_by(city) |>
  dplyr::rename(`Dia`=date,
                `Total de Mortes`=last_available_deaths,
                `Cidade`=city) |>
  ggplot2::ggplot(ggplot2::aes(y=`Total de Mortes`,x=`Dia`,
                               color=`Cidade`))+
  ggplot2::geom_line()+
  ggplot2::labs(
    title="Mortes Acumuladas na cidade de Sorocaba \ncomparada com outras cidades"
  )+
  ggplot2::theme_minimal()

mortes_acumuladas |> plotly::ggplotly()

```

Column {data-width=150}
-------------------------------------

###

```{r}

# Mortes por mil habitantes

((max(covid_sorocaba$last_available_deaths)/687357)*1000)  |>
  round(digits=2) |> 
  flexdashboard::valueBox(
    caption="mortes por mil habitantes",
    icon="fas fa-users-slash"
  )

```

###

```{r}
# Data com mais mortes

covid_sorocaba |> 
  dplyr::filter(
    new_deaths==max(covid_sorocaba$new_deaths)
  ) |> 
  dplyr::select(date) |>
  dplyr::pull() |> 
  format("%d/%m/%y") |> 
  flexdashboard::valueBox(
    caption="data com maior número de mortes",
    icon="far fa-calendar-alt"
  )

```

###

```{r}
# Mês com mais mortes

covid_sorocaba |> 
  dplyr::mutate(
    month=lubridate::floor_date(date, "month")
  )|>
  dplyr::group_by(month) |> 
  dplyr::summarise(
    total_deaths=sum(new_deaths)
  ) |> 
  dplyr::filter(
    total_deaths==max(total_deaths)
  ) |> 
  dplyr::select(month) |>
  dplyr::pull() |> 
  format("%m/%y") |> 
  flexdashboard::valueBox(
    caption="mês com maior número de mortes",
    icon="far fa-calendar-alt"
  )

```

###

```{r}
# Dias consecutivos sem mortes

dias_consec_deaths <- covid_sorocaba |> 
  dplyr::mutate(
    Contagem= stats::ave(new_deaths, 
                         data.table::rleid(new_deaths), FUN=seq_along)
  ) |>
  dplyr::filter(
    new_deaths==0
  ) |> 
  dplyr::select(Contagem)

dias_consec_deaths |> 
  dplyr::slice_tail() |> 
  dplyr::pull() |> 
  flexdashboard::valueBox(
    caption="dias consecutivos sem mortes",
    icon= "fas fa-check-circle",
    color="success"
  )

```

### Informações

* Os dados referentes à mortalidade foram retirados do site [brasil.io](https://brasil.io/dataset/covid19/). Para mais informações sobre a manipulação deles, acesse o [repositório do dashboard no github](https://github.com/victordogo/covid19-sorocaba/tree/master/data-raw);
* Alguma dúvida? Envie um e-mail para victordogo@gmail.com ou acesse a aba ["Glossário"](#glossário);
* **Atualizado pela última vez em `r format(Sys.Date(), '%d/%m/%y')` às `r format(Sys.time(), '%R')` BRT.**


Vacinação
================================================================

Column {.tabset}
-------------------------------------

### Vacinação da Cidade de Sorocaba

```{r}
# Vacinação na cidade de sorocaba

cores <- c("População estimada (Masculino)" = "#ffc3a4",
           "1ª Dose (M)" = "#EE5A45",
           "2ª Dose ou Única (M)" = "#790000",
           "População estimada (Feminino)" = "#7bd1cb",
           "1ª Dose (F)" = "#1E8F89",
           "2ª Dose ou Única (F)" = "#00322f")

grafico_vacinacao <- vacina_scb |>
  ggplot2::ggplot(ggplot2::aes(x = grupo_idade, y=n_grafico))+
  ggplot2::geom_bar(data=vacina_scb[vacina_scb$sexo == "F",] |>
                      dplyr::distinct(populacao_grafico, .keep_all = TRUE),
                    ggplot2::aes(x = grupo_idade,
                                 y = populacao_grafico,
                                 fill = "População estimada (Feminino)"),
                    stat = "identity")+
  ggplot2::geom_bar(data=vacina_scb[vacina_scb$sexo == "M",] |>
                      dplyr::distinct(populacao_grafico, .keep_all = TRUE),
                    ggplot2::aes(x = grupo_idade,
                                 y = populacao_grafico,
                                 fill = "População estimada (Masculino)"),
                    stat = "identity")+
  ggplot2::geom_bar(data=vacina_scb[vacina_scb$sexo == "F",] |>
             dplyr::filter(dose_vacina == '1'),
             ggplot2::aes(fill = "1ª Dose (F)"),
             stat = "identity")+
  ggplot2::geom_bar(data=vacina_scb[vacina_scb$sexo == "M",] |>
                      dplyr::filter(dose_vacina == '1'),
                      ggplot2::aes(fill = "1ª Dose (M)"),
                      stat = "identity")+
  ggplot2::geom_bar(data=vacina_scb[vacina_scb$sexo == "F",] |>
                      dplyr::filter(dose_vacina == '2'),
                    ggplot2::aes(fill = "2ª Dose ou Única (F)"),
                    stat = "identity")+
  ggplot2::geom_bar(data=vacina_scb[vacina_scb$sexo == "M",] |>
                      dplyr::filter(dose_vacina == '2'),
                    ggplot2::aes(fill = "2ª Dose ou Única (M)"),
                    stat = "identity")+
  ggplot2::annotate("text",
            x="0-4 anos", y=5000,
            label = "Feminino",
            hjust = 0,
            fontface = "bold"
  )+
   ggplot2::annotate("text",
            x="0-4 anos", y=-5000,
            label = "Masculino",
            hjust = 1,
            fontface = "bold"
  )+
  ggplot2::labs(x="Faixa Etária",y="Vacinados",
                title="Vacinação na cidade de Sorocaba")+
  ggplot2::scale_y_continuous(
    breaks=c(-30000,-25000,-20000, -15000, -10000, -5000, 0,
             5000, 10000, 15000, 20000, 25000, 30000),
    labels = c(
      "-30000"="30.000",
      "-25000"="25.000",
      "-20000"="20.000",
      "-15000"="15.000",
      "-10000"="10.000",
      "-5000"="5.000",
      "0"="0",
      "5000"="5.000",
      "10000"="10.000",
      "15000"="15.000",
      "20000"="20.000",
      "25000"="25.000",
      "30000"="30.000"
    )
  )+
  ggplot2::scale_fill_manual(values = cores,
                             limits = c("População estimada (Masculino)",
                                        "1ª Dose (M)",
                                        "2ª Dose ou Única (M)",
                                        "2ª Dose ou Única (F)",
                                        "1ª Dose (F)",
                                        "População estimada (Feminino)"))+
  ggplot2::guides(fill=ggplot2::guide_legend(nrow=1,byrow=TRUE))+
  ggplot2::theme_minimal()+
  ggplot2::theme(
    plot.title = ggplot2::element_text(hjust = 0.5, size = 16),
    plot.subtitle = ggplot2::element_text(hjust = 0.5),
    axis.text = ggplot2::element_text(size = 12),
    axis.title = ggplot2::element_text(size = 12),
    plot.background = ggplot2::element_rect(fill = "white", color = "white")
  )+
  ggplot2::coord_flip()

grafico_vacinacao |> plotly::ggplotly()

```

Column {data-width=150}
-------------------------------------

###

```{r}
# Porcentagem da população com 1 dose

vacina_scb |>
  dplyr::group_by(dose_vacina) |> 
  dplyr::filter(dose_vacina==1) |> 
  dplyr::summarise(porc_tot=(sum(n)/sum(populacao))*100) |> 
  dplyr::select(porc_tot) |> 
  dplyr::pull() |> 
  round(2) |> 
  paste0("%") |>
  flexdashboard::valueBox(
    caption="da população com a 1ª dose",
    icon= "fas fa-syringe",
    color="success"
  )
  
```

###

```{r}
# Porcentagem da população com 2 dose

vacina_scb |>
  dplyr::group_by(dose_vacina) |> 
  dplyr::filter(dose_vacina==2) |> 
  dplyr::summarise(porc_tot=(sum(n)/sum(populacao))*100) |> 
  dplyr::select(porc_tot) |> 
  dplyr::pull() |> 
  round(2) |> 
  paste0("%") |>
  flexdashboard::valueBox(
    caption="da população com a 2ª dose",
    icon= "fas fa-syringe",
    color="success"
  )
  
```

###

```{r}
# Porcentagem de +15 anos com 1 dose

vacina_scb[-c(1:7),] |>
  dplyr::group_by(dose_vacina) |> 
  dplyr::filter(dose_vacina==1) |> 
  dplyr::summarise(porc_tot=(sum(n)/sum(populacao))*100) |> 
  dplyr::select(porc_tot) |> 
  dplyr::pull() |> 
  round(2) |> 
  paste0("%") |>
  flexdashboard::valueBox(
    caption="da população acima de 15 anos com a 1ª dose",
    icon= "fas fa-syringe",
    color="success"
  )
  
```

###

```{r}
# Porcentagem de +15 anos com 1 dose

vacina_scb[-c(1:7),] |>
  dplyr::group_by(dose_vacina) |> 
  dplyr::filter(dose_vacina==2) |> 
  dplyr::summarise(porc_tot=(sum(n)/sum(populacao))*100) |> 
  dplyr::select(porc_tot) |> 
  dplyr::pull() |> 
  round(2) |> 
  paste0("%") |>
  flexdashboard::valueBox(
    caption="da população acima de 15 anos com a 2ª dose",
    icon= "fas fa-syringe",
    color="success"
  )
  
```

### Informações

* Os dados referentes à vacinação foram retirados do site [basedosdados.org](https://basedosdados.org/dataset/br-ms-vacinacao-covid19). Para mais informações sobre a manipulação deles, acesse o [repositório do dashboard no github](https://github.com/victordogo/covid19-sorocaba/tree/master/data-raw);
* O gráfico de vacinação foi inspirado no trabalho de Bruno Mioto no [seguinte post;](https://medium.com/basedosdados/analisando-dados-de-vacina%C3%A7%C3%A3o-contra-covid-19-com-a-bd-49fe3db8c7f4)
* Alguma dúvida? Envie um e-mail para victordogo@gmail.com ou acesse a aba ["Glossário"](#glossário);
* **Atualizado pela última vez em `r format(Sys.Date(), '%d/%m/%y')` às `r format(Sys.time(), '%R')` BRT.**

Glossário
======================================================

Sobre
======================================================

**Atualizado pela última vez em `r format(Sys.Date(), '%d/%m/%y')` às `r format(Sys.time(), '%R')` BRT.**

Este é o dashboard "A COVID-19 em Sorocaba". Ele é o resultado do Projeto de Extensão  "Análise e Visualização dos Dados da Pandemia na Cidade de Sorocaba", sob fomento da ProEx - Pró Reitoria de Extensão da UFSCar - Universidade Federal de São Carlos.

Ele é realizado por Victor Alves Dogo Martins (aluno do DEs - Departamento de Estatística da UFSCar - Campus São Carlos), sob orientação da Profa. Dra. Andreza Aparecida Palma (vinculada ao DEc - Departamento de Economia da UFSCar - Campus Sorocaba). 

O objetivo deste projeto é fornecer um dashboard conciso e de fácil compreensão com dados relativos à pandemia da COVID-19 na cidade de Sorocaba - SP. Estes dados, ao longo do tempo, consistem em casos confirmados, mortes confirmadas e em esforços da campanha de vacinação na cidade.

Todos os dados, gráficos e formatação do dashboard são construídos com auxílio da linguagem de programação estatística R:

* O dashboard é construído com o auxílio do pacote [`{flexdashboard}`](https://pkgs.rstudio.com/flexdashboard/);
* Os dados são tratados com auxílio dos pacotes [`{dplyr}`](https://dplyr.tidyverse.org/) e [`{tidyr}`](https://tidyr.tidyverse.org/);
* Os gráficos são produzidos, em suas versões estáticas, com auxílio do pacote [`{ggplot2}`](https://ggplot2.tidyverse.org/). Depois, são transformados em versões interativas com auxílio do pacote [`{plotly}`](https://plotly.com/r/);
* O site é publicado com auxílio do GitHub Pages, com automatização da leitura e tratamento diário das bases de dados através do GitHub Actions;
* As bases de dados são retiradas de (inserir sites).


Quaisquer dúvidas, críticas, elogios e sugestões podem ser encaminhadas por e-mail para: teste, substituir depois.


Você pode visualizar o repositório deste site em [victordogo/covid19-sorocaba](https://github.com/victordogo/covid19-sorocaba) no GitHub.

**Referências:**